{{tag> programmation}}
====== Gtkmm  ======
[[http://www.gtkmm.org/ | Gtkmm]] est un framework C++ permettant la création d'interface graphiques. Il s'agit d'une surcouche à GTK+ qui permet aux programmeurs c++ d'utiliser GTK+ par le biais de classes, et ainsi de profiter de tous les avantages du c++ (dérivation...).

=====Installation=====
Pour installer les librairies de développement de gtkmm, il faut installer le paquet [[apt://libgtkmm-2.4-dev |libgtkmm-2.4-dev ]].

Si vous le désirez vous pouvez installer la documentation (en anglais) en installant [[apt://libgtkmm-2.4-doc |libgtkmm-2.4-doc]]. Pour la lire, vous pouvez utiliser le programme [[apt://devhelp |devhelp]], ou simplement votre navigateur web préféré en vous rendant à l'adresse [[file:///usr/share/doc/libgtkmm-2.4-doc/docs/index.html]]

=====Compilation=====
==== Avec g++ ====
Pour compiler, vous devrez linker le projet en utilisant l'utilitaire pkg-config comme ci-dessous:
<code>g++ fichier.cpp -o executable `pkg-config gtkmm-2.4 --cflags --libs`  </code>

==== Avec l'IDE codeblocks  ====
Pour compiler sous [[:code_blocks|Codeblocks]], il vous suffit également de linker le projet, toujours en utilisant l'utilitaire pkg-config de la manière suivante :
  * Créez un projet de type « console application » en C++ dans codeblocks.
  * Allez dans Project → Build options → Compiler settings → Other options, et collez-y ceci :
   <code>`pkg-config --cflags gtkmm-2.4`</code>

  * Allez dans Project → Build options → Linker settings → Other linker options, et collez-y ceci :
   <code>`pkg-config --libs gtkmm-2.4`</code>

  * Entrez un code de base pour gtkmm :
<code>
#include <iostream>
#include <gtkmm-2.4/gtkmm.h>

int main(int argc, char *argv[])
{
    Gtk::Main kit(argc, argv);
    return 0;
}
</code>

  * Vous pouvez maintenant écrire et compiler votre projet. Vous pouvez également l'enregistrer comme template : File → save project as user template. Vous pourrez ainsi créer directement dans codeblocks un nouveau projet utilisant gtkmm : File → New → Project → User templates.

Bien sûr, cette démarche doit être adaptée à la version de gtkmm que vous utilisez. Les lignes ci-dessus ont été écrite pour le paquet **gtkmm-2.4**. Mais si vous avez installé le paquet **gtkmm-3.0**, elles doivent être naturellement adaptées de la façon suivante :

  * Créez un projet de type « console application » en C++ dans codeblocks.
  * Allez dans Project → Build options → Compiler settings → Other options, et collez-y ceci :
   <code>`pkg-config --cflags gtkmm-3.0`</code>

  * Allez dans Project → Build options → Linker settings → Other linker options, et collez-y ceci :
   <code>`pkg-config --libs gtkmm-3.0`</code>

  * Entrez un code de base pour gtkmm :
<code>
#include <gtkmm.h>

int main(int argc, char *argv[])
{
    Gtk::Main kit(argc, argv);
    Gtk::Window window;
    kit.run(window);
    return 0;
}
</code>


==== Avec CMake ====
[[http://www.cmake.org|Cmake]] est un programme permettant de simplifier la compilation en générant des makefiles.
Pour utiliser gtkmm avec cmake, il faut procéder ainsi : 
<code>project(nom_du_projet)
cmake_minimum_required(VERSION 2.6)

find_package(PkgConfig)
pkg_check_modules(GTKMM gtkmm-2.4 )

link_directories(
    ${GTKMM_LIBRARY_DIRS} )

include_directories(
${GTKMM_INCLUDE_DIRS} )  

set (SRC
main.cpp
#Vos sources
)

add_executable(executable 
    ${SRC} )

target_link_libraries(executable 
    ${GTKMM_LIBRARIES} )</code> 
CMake utilisera pkg-config pour trouver la librairie, ce code ne permet donc pas de compiler un programme gtkmm de façon portable.

=====Liens utiles=====
[[http://www.gtkmm.org/documentation.shtml|La documentation officielle (en anglais)]]

[[http://www.gtkmm.org/docs/gtkmm-2.4/docs/tutorial/pdf/programming-with-gtkmm.pdf|Le livre en ligne "Programming with gtkmm"]] ([[http://www.gtkmm.org/docs/gtkmm-2.4/docs/tutorial/html/index.html|aussi disponible en html]])

[[http://www.siteduzero.com/tutoriel-3-277422-creer-des-interfaces-graphiques-en-c-avec-gtkmm.html#part_277420|Tutoriel en français sur "Le Site du Zéro"]]
----
//Contributeurs : [[utilisateurs:geenux|Geenux]], [[utilisateurs:bsaleil|bsaleil]]//